package com.wing.enterprise.res;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 领料记录
 *
 * @author xiayang
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("res_receipt_record")
public class ReceiptRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(type = IdType.AUTO)
    public Integer id;

    /**
     * 领料单号
     */
    private String code;

    /**
     * 生产报工单ID
     */
    private Long workOrderId;

    /**
     * 生产报工单编号
     */
    @TableField(exist = false)
    private String workOrderCode;

    /**
     * 生产计划ID
     */
    @TableField(exist = false)
    private Long productionPlanId;

    /**
     * 生产计划编号
     */
    @TableField(exist = false)
    private String productionPlanCode;

    /**
     * 所属制造令Id
     */
    @TableField(exist = false)
    private Long productionRecordId;

    /**
     * 所属制造令
     */
    @TableField(exist = false)
    private String productionRecordCode;

    /**
     * 车间id
     */
    @TableField(exist = false)
    private Long workshopId;

    /**
     * 车间名称
     */
    @TableField(exist = false)
    private String workshopName;


    /**
     * 物料编号
     */
    @TableField(exist = false)
    private String skuCode;

    /**
     * 领料类型
     */
    private Long inventoryTypeId;

    /**
     * 领料类型编码
     */
    @TableField(exist = false)
    private String inventoryTypeCode;

    /**
     * 领料类型名称
     */
    @TableField(exist = false)
    private String inventoryTypeName;

    /**
     * 生产工序ID
     */
    @TableField(exist = false)
    private Long productionProcessId;

    /**
     * 工序ID
     */
    @TableField(exist = false)
    private Long processId;

    /**
     * 工序编号
     */
    @TableField(exist = false)
    private String processCode;

    /**
     * 工序名称
     */
    @TableField(exist = false)
    private String processName;

    /**
     * 仓库类型
     */
    private Long warehouseType;


    /**
     * 领料仓库
     */
    private Long receiptWarehouse;

    /**
     * 审核人
     */
    private Long auditPerson;

    /**
     * 审核人名称
     */
    @TableField(exist = false)
    private String auditPersonName;

    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date auditTime;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 状态名称
     */
    @TableField(exist = false)
    private String statusName;

    /**
     * 领料料号数
     */
    @TableField(exist = false)
    private Integer receiptNum;

    /**
     * 审核结果
     */
    private String auditResult;

    /**
     * 备注
     */
    private String remark;

    /**
     * 领料人
     */
    private Long creator;

    /**
     * 领料人名称
     */
    private String creatorName;

    /**
     * 领料时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 领料记录详细
     */
    @TableField(exist = false)
    private List<ReceiptRecordDetail> receiptRecordDetailList;

    /**
     * 外部编码-领料出库-材料出库
     */
    private String externalCode;

    /**
     * 0 领料出库 1其他出库
     */
    private String operateType;

    /**
     * 设备/工种id
     */
    private Long gzsbId;

    /**
     * 本次领取数量
     */
    private Integer getQuantity;

    /**
     * workstation_nature
     */
    private String workstationNature;

    /**
     * 批次号
     */
    private String batchNumber;

    /**
     * 领料类型 1.从上一道工序领取  2.领取配料
     */
    private String type;

    /**
     * 工站性质名称
     */
    @TableField(exist = false)
    private String workstationNatureName;



    /**
     * 订单标识状态  1 进行中  2 领取完成
     */
    private String flagStatus;

}
